package com.jsjvm.client.execution.objrepr;

import com.jsjvm.client.classparser.JClass;
import com.jsjvm.client.classparser.JMember.JMethod;
import com.jsjvm.client.classparser.jconstants.JMemberConstant;
import com.jsjvm.client.dbg.ObjectIDManager.IDIdentifiable;
import com.jsjvm.client.execution.JClassLoader.JClassNotLoadedException;

public interface ObjectRepr extends IDIdentifiable {
	
	public abstract Object getField(JMemberConstant fld);

	public abstract void putField(JMemberConstant fld, Object value);

	public abstract JMethod dispatchMethod(JMemberConstant cm);
	
	public abstract JMethod dispatchSuperMethod(JMemberConstant cm) throws JClassNotLoadedException;

	public abstract JMethod dispatchNonVirtualMethod(JMemberConstant cm) throws JClassNotLoadedException;

	public abstract JClass getJClass();
		
}
